import pandas as pd
import matplotlib.pyplot as plt

# 读取Excel文件中的数据
data = pd.read_excel('/Users/ed/Desktop/team-building-games/单位分析/优势区间问题/优势区间问题表格.xlsx', index_col='单位')
# clone仓库到本地后需要更改上面表格位置才可以运行此ptyhon源码
# 需要确保环境可以调用pandas，终端输入  pip install pandas
def get_single_damage(damage_type):
    damage_table = {
        '迫击炮步兵': 26,
        '99式步兵': 19,
        '11式轻机枪手': 8,
        '反坦克步枪步兵': 8,
    }
    return damage_table[damage_type]

# 计算DPS
def calculate_dps(t, 护甲, 开技能时间):
    if t < 260:
        护甲 = 17
    elif t < 400:
        护甲 += 3
    else:
        护甲 += 3

    if (开技能时间 < t and t < 开技能时间 + 60):
        护甲 += 5

    dps_values = []
    for _, row in data.iterrows():
        dmg = get_single_damage(row.name)  # 获取单位对应的伤害
        dps = max((row['建筑伤害'] - 护甲) / row['射速'], 0)  # 计算DPS，取最大值与0比较
        dps_values.append(dps)

    return dps_values  # 输出结果

护甲 = 17
开技能时间 = 0

t_values = list(range(1, 1201))
dps_values = [sum(calculate_dps(t, 护甲, 开技能时间)) for t in t_values]

def plot_graph(t_values, dps_values):  # 绘制图形
    plt.plot(t_values, dps_values)  # 添加标题、横纵坐标标签
    plt.title('DPS vs. T')
    plt.xlabel('t')
    plt.ylabel('dps')

    plt.show()

plot_graph(t_values, dps_values)
